using System;
using System.Data;
using System.Data.SqlClient;
using DataAccess;
using Microsoft.ApplicationBlocks.Data;
using Common;
using SystemFrameworks;


namespace BusinessRules
{
    /// <summary>
    /// Clase de acceso a datos para la entidad Demoras
    /// </summary>
    public class Areas : SINIC
    {
        #region Private Data Access Atributes

        private const String ARE_ID_PARAM = "@ARE_ID";
        private const String ARE_NOMBRE_PARAM = "@ARE_NOMBRE";
        private const String ARE_ADMINISTRABLE_PARAM = "@ARE_ADMINISTRABLE";
        private const String ARE_ACTIVAR_NOMBRE_PARAM = "@ARE_ACTIVAR_NOMBRE";
        private const String ARE_ASOCIAR_USUARIOS_PARAM = "@ARE_ASOCIAR_USUARIOS";

        #endregion Private Data Access Atributes

        /// <summary>
        /// Constructor de la clase Areas
        /// </summary>
       
        public Areas(string strCadenaConecxion)
        {
            CadenaConexion = strCadenaConecxion;
        }

        private string _CadenaConexion;

        public string CadenaConexion
        {
            get { return _CadenaConexion; }
            set { _CadenaConexion = value; }
        }

        public AreasData BuscarAreas()
        {
            AreasData response = new AreasData();
            try
            {
                SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_BUSCAR_ADM_AREAS", response);
            }
            catch (SqlException sqlEx)
            {
                throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "PAS_BUSCAR_ADM_AREAS"), sqlEx);
            }
            catch (Exception ex)
            {
                throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorBuscar", this.GetType().FullName), ex);
            }
            if (response.Rows.Count == 0)
                return null;
            return response;
        }
        public AreasData BuscarAreasFiat()
        {
            AreasData response = new AreasData();
            try
            {
                SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_BUSCAR_ADM_AREAS_FIAT", response);
            }
            catch (SqlException sqlEx)
            {
                throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "PAS_BUSCAR_ADM_AREAS_FIAT"), sqlEx);
            }
            catch (Exception ex)
            {
                throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorBuscar", this.GetType().FullName), ex);
            }
            if (response.Rows.Count == 0)
                return null;
            return response;
        }

        public AreasData ConsultarAreas(string Id)
        {
            AreasData response = new AreasData();

            SqlParameter param1 = new SqlParameter(ARE_ID_PARAM, Id);
            SqlParameter[] parameters = { param1 };
            try
            {
                SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_CONSULTAR_ADM_AREAS", response, parameters);
            }
            catch (SqlException sqlEx)
            {
                throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "PAS_CONSULTAR_ADM_AREAS"), sqlEx);
            }
            catch (Exception ex)
            {
                throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorBuscar", this.GetType().FullName), ex);
            }
            if (response.Rows.Count == 0)
                return null;
            return response;
        }

        public AreasData ConsultarAreasAdm(string strSiNo)
        {
            AreasData response = new AreasData();

            SqlParameter param1 = new SqlParameter(ARE_ADMINISTRABLE_PARAM, strSiNo);
            SqlParameter[] parameters = { param1 };
            try
            {
                SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_CONSULTAR_ADM_AREAS_ADM", response, parameters);
            }
            catch (SqlException sqlEx)
            {
                throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "PAS_CONSULTAR_ADM_AREAS_ADM"), sqlEx);
            }
            catch (Exception ex)
            {
                throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorBuscar", this.GetType().FullName), ex);
            }
            if (response.Rows.Count == 0)
                return null;
            return response;
        }

        public void AdicionarAreas(AreasData datos)
        {
            try
            {
                foreach (DataRow row in datos.Rows)
                {
                    SqlParameter param1 = new SqlParameter(ARE_ID_PARAM, row[AreasData.ARE_ID_FIELD]);
                    SqlParameter param2 = new SqlParameter(ARE_NOMBRE_PARAM, row[AreasData.ARE_NOMBRE_FIELD]);
                    SqlParameter param3 = new SqlParameter(ARE_ADMINISTRABLE_PARAM, row[AreasData.ARE_ADMINISTRABLE_FIELD]);
                    SqlParameter param4 = new SqlParameter(ARE_ACTIVAR_NOMBRE_PARAM, row[AreasData.ARE_ACTIVAR_NOMBRE_FIELD]);
                    SqlParameter param5 = new SqlParameter(ARE_ASOCIAR_USUARIOS_PARAM, row[AreasData.ARE_ASOCIAR_USUARIOS_FIELD]);
                    SqlParameter[] parameters = { param1, param2, param3, param4, param5 };
                    SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ADICIONAR_ADM_AREAS", parameters);
                }
            }
            catch (Exception ex)
            {
                throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", "Areas"), ex);
            }
        }

        public void ActualizarAreas(AreasData datos)
        {
            try
            {
                foreach (DataRow row in datos.Rows)
                {
                    SqlParameter param1 = new SqlParameter(ARE_ID_PARAM, row[AreasData.ARE_ID_FIELD]);
                    SqlParameter param2 = new SqlParameter(ARE_NOMBRE_PARAM, row[AreasData.ARE_NOMBRE_FIELD]);
                    SqlParameter param3 = new SqlParameter(ARE_ADMINISTRABLE_PARAM, row[AreasData.ARE_ADMINISTRABLE_FIELD]);
                    SqlParameter param4 = new SqlParameter(ARE_ACTIVAR_NOMBRE_PARAM, row[AreasData.ARE_ACTIVAR_NOMBRE_FIELD]);
                    SqlParameter param5 = new SqlParameter(ARE_ASOCIAR_USUARIOS_PARAM, row[AreasData.ARE_ASOCIAR_USUARIOS_FIELD]);
                    SqlParameter[] parameters = { param1, param2, param3, param4, param5 };
                    SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ACTUALIZAR_ADM_AREAS", parameters);
                }
            }
            catch (Exception ex)
            {
                throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorActualizar", "Areas"), ex);
            }
        }

        /// <summary>
        /// Elimina un registro de la entidad
        /// </summary>
        /// <param name="Id">Identificador del registro</param>
        public void EliminarAreas(string Id)
        {
            try
            {
                SqlParameter param1 = new SqlParameter(ARE_ID_PARAM, Id);
                SqlParameter[] parameters = { param1 };
                SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ELIMINAR_ADM_AREAS", parameters);
            }
            catch (Exception ex)
            {
                throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorEliminar", "Areas"), ex);
            }
        }

    }
}